
class ArchBase():

    def __init__(self, **kwargs):
        self.init_parameter(**kwargs)

    def init_parameter(self, **kwargs):
        self.downlink_in_rack = kwargs['DOWNLINK_IN_RACK']
        self.rack_num = kwargs['RACK_NUM']


    def get_uplink_in_rack(self):
        return self.uplink_in_rank


    def generate_rack_loop(self):
        pass

    
    def calc_min_provision(self):
        print("You need to override calc_min_provision() in a subclass!")
        raise NotImplemented


if __name__ == "__main__":
    conf_dict = {
        'DOWNLINK_IN_RACK': 64,
        "RACK_NUM": 64,
    }
    a = ArchBase(**conf_dict)
    a.calc_min_provision()